package com.tl.ip_location_relation_v4.utils;

import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

/**
 * 
 * @author Antg
 * @date 2021年7月7日
 * @Description
 * 缓存类,将处理过的数据对象缓存到一个文件中,下次就不用在进行数据处理了
 */
public class CacheUtils {
	/**
	 * 
	 * @author Antg
	 * @date 2021年7月7日
	 * @param 
	 * @retun
	 * @Description 将对象缓存到文件中
	 */
	public static void cacheObj(Object object,String filePath){
		try {
			//创建文件输出流
			FileOutputStream fos = new FileOutputStream(filePath);
			//将文件输出流嫁接到对象输出流中
			ObjectOutputStream oos = new ObjectOutputStream(fos);
			//将对象缓存到磁盘中
			oos.writeObject(object);
			//关闭流
			oos.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 
	 * @author Antg
	 * @date 2021年7月7日
	 * @param 
	 * @retun
	 * @Description 将对象读取出来
	 */
	public static Object getObjCache(String filePath){
		try {
			//创建文件输入流
			FileInputStream fis = new FileInputStream(filePath);
			//使用字节数组流一次性将数据读取
			byte[] buffer = new byte[40*1024*1024];
			int len = fis.read(buffer);
			fis.close();
			ByteArrayInputStream bais = new ByteArrayInputStream(buffer,0,len);
			//将文件嫁接到对象输入流中
			ObjectInputStream ois = new ObjectInputStream(bais);
			//读取对象
			Object obj = ois.readObject();
			ois.close();
			return obj;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
}
